package com.gitee.ykr.lightweight.rpc.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于标记服务调用方的接口，传入所需参数
 * @author YKR
 * @Describe
 * @date 2021/8/17
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RpcClient {

    /**
     * 调用的服务的名字，用于按名字注入，必填
     * @return
     */
    String name();

    /**
     * 接口的字节码文件
     * @return
     */
    String rpcClz() default "";

    /**
     * 是否采用同步调用，默认为true
     * @return
     */
    boolean isSyn() default true;

    /**
     * 服务提供方的host
     * @return
     */
    String host() default "localhost";

    /**
     * 服务提供方的端口
     * @return
     */
    int port() default -1;

    /**
     * traceId的在方法参数中的位置，默认为0，只能一个类全局配置，不支持单个方法配置。
     * traceId 用于分布式链路追踪，需要手动传入，如果没有这个需求可不做任何配置即可
     * @return
     */
    int traceIdIndex() default 0;
}
